// interface
// 对对象的现状( shape )进行描述
// Duck Typing ( 鸭子类型 )
// 只是用于静态检测时候使用

interface Person {
  name: string
  age: number
}

let userName0: Person = {
  name: "asdsad",
  age: 20
}

// 可选属性在变量名后加？
// 这样的话age可写可不写
interface Person1 {
  name: string
  age?: number
}

let userName1: Person1 = {
  name: "asdsad"
}


// readonly 只在创建的时候使用，只读状态，不可以修改
interface Person2 {
  readonly id: number
  name: string
  age?: number
}
let userName2: Person2 = {
  id: 12,
  name: "asdsad"
}
// error 无法为“id”赋值，因为它是只读属性
// userName2.id = 3